﻿//Created by Action Script Viewer - http://www.buraks.com/asv
package net.wooga.pets.utils {
    import com.adobe.utils.*;

    public class Arrays {

        public static function merge(_arg1:Array):Array{
            var _local3:Array;
            var _local2:Array = [];
            for each (_local3 in _arg1) {
                _local2 = _local2.concat(_local3);
            };
            return (ArrayUtil.createUniqueCopy(_local2));
        }
        public static function removeFromArray(_arg1, _arg2:Object){
            var _local3:int = _arg1.indexOf(_arg2);
            var _local4:* = null;
            if (_local3 >= 0){
                _local4 = _arg1[_local3];
                _arg1.splice(_local3, 1);
            };
            return (_local4);
        }
        public static function shuffle(_arg1:Array):Array{
            var _local3:Array;
            var _local4:int;
            var _local2:Array = _arg1.concat();
            if (_local2.length > 1){
                _local3 = [];
                while (_local2.length) {
                    _local4 = int((Math.random() * _local2.length));
                    _local3.push(_local2.splice(_local4, 1));
                };
            } else {
                _local3 = _local2;
            };
            return (_local3);
        }
        public static function fastShuffle(_arg1:Array, _arg2:Boolean=false):Array{
            var _local4:int;
            var _local5:int;
            var _local6:Object;
            var _local3:int = _arg1.length;
            _arg1 = (_arg2) ? _arg1.slice() : _arg1;
            _local5 = (_local3 - 1);
            while (_local5 > 0) {
                _local6 = _arg1[_local5];
                _local4 = int((Math.random() * _local3));
                _arg1[_local5] = _arg1[_local4];
                _arg1[_local4] = _local6;
                _local5--;
            };
            return (_arg1);
        }
        public static function contains(_arg1:Array, _arg2:Object):Boolean{
            var _local3:Boolean;
            if (((_arg1) && (_arg1.length))){
                _local3 = !((_arg1.indexOf(_arg2) == -1));
            };
            return (_local3);
        }
        public static function substract(_arg1:Array, _arg2:Array):Array{
            var _local4:Object;
            var _local3:Array = [];
            if (((_arg1) && (_arg1.length))){
                if (((_arg2) && (_arg2.length))){
                    for each (_local4 in _arg1) {
                        if (!contains(_arg2, _local4)){
                            _local3.push(_local4);
                        };
                    };
                } else {
                    _local3 = _arg1.concat();
                };
            };
            return (_local3);
        }
        public static function findByAttribute(_arg1:Array, _arg2:String, _arg3){
            var _local4:Object;
            for each (_local4 in _arg1) {
                if (((_local4.hasOwnProperty(_arg2)) && ((_local4[_arg2] === _arg3)))){
                    return (_local4);
                };
            };
            return (null);
        }
        public static function findAllByAttribute(_arg1:Array, _arg2:String, _arg3):Array{
            var _local5:Object;
            var _local4:Array = [];
            for each (_local5 in _arg1) {
                if (_local5[_arg2] === _arg3){
                    _local4.push(_local5);
                };
            };
            return (_local4);
        }
        public static function extractByAttribute(_arg1:Array, _arg2:String, _arg3){
            var _local4:* = findByAttribute(_arg1, _arg2, _arg3);
            if (_local4){
                removeFromArray(_arg1, _local4);
            };
            return (_local4);
        }
        public static function extractAllByAttribute(_arg1:Array, _arg2:String, _arg3):Array{
            var _local5:*;
            var _local4:Array = findAllByAttribute(_arg1, _arg2, _arg3);
            for each (_local5 in _local4) {
                removeFromArray(_arg1, _local5);
            };
            return (_local4);
        }
        public static function getAllValuesOfAttribute(_arg1:Array, _arg2:String):Array{
            var _local4:Object;
            var _local3:Array = [];
            for each (_local4 in _arg1) {
                _local3.push(_local4[_arg2]);
            };
            return (_local3);
        }

    }
}//package net.wooga.pets.utils 
